package cn.iocoder.yudao.module.acm.service.onboardsupply;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.acm.controller.admin.onboardsupply.vo.OnboardSupplyPageReqVO;
import cn.iocoder.yudao.module.acm.controller.admin.onboardsupply.vo.OnboardSupplyRespVO;
import cn.iocoder.yudao.module.acm.controller.admin.onboardsupply.vo.OnboardSupplySaveReqVO;
import cn.iocoder.yudao.module.acm.dal.dataobject.onboardsupply.OnboardSupplyDO;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;

/**
 * 航机管理-机供品分类管理 Service 接口
 *
 * @author yisla
 */
public interface OnboardSupplyService {

    /**
     * 创建航机管理-机供品分类管理
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createOnboardSupply(@Valid OnboardSupplySaveReqVO createReqVO);

    /**
     * 更新航机管理-机供品分类管理
     *
     * @param updateReqVO 更新信息
     */
    void updateOnboardSupply(@Valid OnboardSupplySaveReqVO updateReqVO);

    /**
     * 删除航机管理-机供品分类管理
     *
     * @param id 编号
     */
    void deleteOnboardSupply(Long id);

    /**
    * 批量删除航机管理-机供品分类管理
    *
    * @param ids 编号
    */
    void deleteOnboardSupplyListByIds(List<Long> ids);

    /**
     * 获得航机管理-机供品分类管理
     *
     * @param id 编号
     * @return 航机管理-机供品分类管理
     */
    OnboardSupplyDO getOnboardSupply(Long id);

    /**
     * 获得航机管理-机供品分类管理分页
     *
     * @param pageReqVO 分页查询
     * @return 航机管理-机供品分类管理分页
     */
    PageResult<OnboardSupplyRespVO> getOnboardSupplyPage(OnboardSupplyPageReqVO pageReqVO);


    default Map<Long, OnboardSupplyRespVO> getProductVOMap(Collection<Long> ids) {
        return convertMap(getProductVOList(ids), OnboardSupplyRespVO::getId);
    }

    List<OnboardSupplyRespVO> getProductVOList(Collection<Long> ids);

    List<OnboardSupplyDO> validProductList(Collection<Long> ids);


}
